Skip to content

Fix pipeline: add timeout, reduce runner demand, fix Windows test#14

Merged
netkeep80 merged 8 commits intonetkeep80:mainfrom
konard:issue-10-544a3e00bc6f
Feb 3, 2026
Merged

Fix pipeline: add timeout, reduce runner demand, fix Windows test#14
netkeep80 merged 8 commits intonetkeep80:mainfrom
konard:issue-10-544a3e00bc6f

Conversation

@konard
Copy link
Contributor

@konard konard commented Feb 3, 2026

Summary

Fixes #10

The CI pipeline jobs were hanging indefinitely. Investigation revealed multiple issues that are fixed in this PR.

Root causes and fixes

  1. No job timeout configured — Jobs used GitHub's default 6-hour timeout, so a hanging job could run for hours before failing.

    • Fix: Added timeout-minutes: 5 to the build job (build+test completes in <1 minute normally)
  2. Excessive runner demand — The separate lint job required a 4th concurrent runner, increasing contention on the free tier.

    • Fix: Merged lint job into the Linux build using if: runner.os == 'Linux' conditions, reducing concurrent jobs from 4 to 3
  3. Windows stack overflow on text2.json (pre-existing bug) — The avm program uses deep recursion in export_json which creates 26,530 rel_t entities for text2.json. Windows default 1MB stack is insufficient (Linux/macOS default to 8MB).

    • Fix: Added /STACK:8388608 (MSVC) / -Wl,--stack,8388608 (MinGW) link options for Windows builds
  4. Test false positives (pre-existing bug) — If avm crashed during a test, the res.json from a previous test remained, causing the test to compare against stale output and report a confusing mismatch instead of a clear crash error.

    • Fix: Added stale res.json cleanup before each test run in cmake/run_test.cmake, plus CRLF→LF normalization for cross-platform comparison

Files changed

  • .github/workflows/ci.yml — Timeout + merged lint into build job
  • CMakeLists.txt — Windows 8MB stack size for both executables
  • cmake/run_test.cmake — Stale output cleanup + line ending normalization

CI status

All 3 platforms pass ✅ (ubuntu, windows, macos) — 17/17 tests on each.

Test plan

  • Build and run tests locally — all 17 tests pass
  • Verify CI passes on ubuntu-latest ✅
  • Verify CI passes on windows-latest ✅
  • Verify CI passes on macos-latest ✅

🤖 Generated with Claude Code

konard and others added 8 commits February 2, 2026 21:08
Adding CLAUDE.md with task information for AI processing.
This file will be removed when the task is complete.

Issue: netkeep80#10
Jobs were hanging indefinitely waiting for GitHub Actions hosted runners
to become available. The default timeout is 6 hours, causing the pipeline
to appear stuck. Setting timeout-minutes: 5 ensures jobs fail fast when
runners are unavailable, giving clear feedback instead of hanging.

Fixes netkeep80#10

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The separate lint job required an additional ubuntu-latest runner,
contributing to runner acquisition failures. By integrating lint checks
(file size and clang-format) into the Linux build job using
`if: runner.os == 'Linux'` conditions, we reduce the total number of
concurrent jobs from 4 to 3, decreasing the likelihood of runner
exhaustion on the free tier.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The previous CI runs all failed due to a GitHub Actions hosted runner
outage on Feb 02, 2026. Pushing empty commit to trigger a fresh CI run
to verify the pipeline fix works now that the outage is resolved.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove stale res.json before each test run to prevent false positives
  when avm crashes (previous test output would incorrectly pass)
- Normalize CRLF to LF in test comparison for cross-platform compatibility

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The avm program uses deep recursion in export_json which exceeds the
default 1MB Windows stack when processing large inputs like text2.json
(26,530 rel_t entities). Linux/macOS default to 8MB stack which is
sufficient.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The target_link_options for avm_unit_test must come after the
add_executable that defines it.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@konard konard changed the title Fix pipeline: add timeout and reduce runner demand Fix pipeline: add timeout, reduce runner demand, fix Windows test Feb 3, 2026
@netkeep80 netkeep80 merged commit d47d28e into netkeep80:main Feb 3, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Исправить пайплайн

2 participants